home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 8: LINUX Games
/
Linux Cubed Series 8 - LINUX Games.iso
/
games
/
x11
/
rpg
/
crossfir.92
/
crossfir
/
crossfire-0.92.5
/
common
/
logger.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-24
|
2KB
|
81 lines
/*
* static char *rcsid_loger_c =
* "$Id: logger.c,v 1.2 1994/10/11 07:22:11 master Exp $ ";
*/
/*
CrossFire, A Multiplayer game for X-windows
Copyright (C) 1992 Frank Tore Johansen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
The author can be reached via e-mail to frankj@ifi.uio.no.
*/
#ifndef NO_LOG
#include <stdarg.h>
#include <global.h>
#include <funcpoint.h>
/*
* Logs a message to stderr, or to file, and/or even to socket.
* Or discards the message if it is of no importanse, and none have
* asked to hear messages of that logLevel.
* logLevels can be logError (always printed), llevDebug, and llevMonster.
*/
void LOG (LogLevel logLevel, char *format, ...)
{
#ifdef SERVER
char buf[VERY_BIG_BUF];
sockets *s;
#endif
va_list ap;
va_start(ap, format);
#ifdef SERVER
buf[0] = '\0';
if (logLevel <= debug)
{
vsprintf(buf, format, ap);
fputs(buf, logfile);
}
for (s = first_socket; s != (sockets *) NULL; s = s->next)
if(s->debug && logLevel <= s->debug)
{
if(buf[0] == '\0')
vsprintf(buf, format, ap);
if(write(s->fd,buf,strlen(buf)) == -1)
perror("log/write");
}
#else
if (logLevel <= debug)
vfprintf(logfile, format, ap);
#endif
if (!exiting && !trying_emergency_save &&
logLevel == llevError && ++nroferrors > MAX_ERRORS) {
exiting = 1;
if (!trying_emergency_save)
(*emergency_save_func) (0);
if (!editor)
fatal(TOO_MANY_ERRORS);
}
va_end(ap);
}
#endif